package net.hn.hnms.biz.equipment.service;

import net.hn.hnms.biz.equipment.domain.dto.HisDto;
import net.hn.hnms.biz.equipment.domain.dto.NowDto;
import net.hn.hnms.biz.equipment.domain.dto.PointDto;
import net.hn.hnms.biz.equipment.domain.vo.ChartDateVo;
import net.hn.hnms.biz.equipment.domain.vo.HisVo;
import net.hn.hnms.biz.equipment.domain.vo.NowVo;
import net.hn.hnms.biz.equipment.domain.vo.PointHistoryListVo;
import net.hn.hnms.sys.common.core.domain.ResponsePage;
import net.hn.hnms.sys.common.mybatis.core.page.PageQuery;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @InterfaceName: DrainageService
 * @Description 排水Service
 * @Author 王龙
 * @Date 2022-08-24
 * @Version 0.1
 */
public interface DrainageService {
    /**
     * 分页条件查询实时数据
     * @param pageQuery
     * @param nowDTO
     * @return
     */
    ResponsePage<NowVo> pageNowList(PageQuery pageQuery, NowDto nowDTO);

//    /**
//     * 分页条件查询报警明细
//     * @param pageQuery
//     * @param abnormalDTO
//     * @return
//     */
//    TableDataInfo<SynergiadataAbnormalPo> pageAbnormalInfo(PageQuery pageQuery, AbnormalDto abnormalDTO);

    /**
     * 分页条件查询历史数据
     * @param pageQuery
     * @param hisDTO
     * @return
     */
    ResponsePage<HisVo> pageHistoryInfo(PageQuery pageQuery, HisDto hisDTO);

    /**
     * 获取所属设备下拉列表
     * @return
     */
    List<String> categoryList(String mineCode);

    /**
     * 获取设备位置下拉列表
     * @return
     */
    List<String> deviceLocaltionList(String mineCode);

    /**
     * 获取水泵房排水量的数据
     * @return
     */
    BigDecimal getDrainAwayWater(String mineCode);

    /**
     * 获取水泵房排水量今日累计量的数据
     * @return
     */
    BigDecimal getTodayAddDrainAwayWater(String mineCode);

    /**
     * 排水系统-开关信息
     * @param pump
     * @param mineCode
     * @return
     */
    Map<String, Integer>  switchInfo(String pump, String mineCode);

    /**
     * 排水系统-主副水位
     * @param pump
     * @param mineCode
     * @return
     */
    Map<String, Float> waterLevelInfo(String pump, String mineCode);

    /**
     * 条件查询历史数据测点曲线
     * @param pointDto
     * @return
     */
    ChartDateVo pointHistoryCurve(PointDto pointDto);

    /**
     * 条件查询历史数据测点列表
     * @param pointDto
     * @return
     */
    List<PointHistoryListVo> pointHistoryList(PointDto pointDto);
}
